package in.lib.utils;
import in.lib.manager.CacheManager;
import in.rob.client.MainApplication;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import android.content.Context;
public class CacheUtils
{
/**
* Max size in bytes
*/
private static final int MAX_SIZE = 20 * 1024 * 1024;
private final ArrayList<String> mIgnore;
public CacheUtils(Context context)
{
MainApplication application = (MainApplication)context.getApplicationContext();
//mCacheManager = new CacheManager(context, context.getPackageName(), true);
mIgnore = new ArrayList<String>();
// for (String user : application.getAddedUsers())
// {
// mIgnore.add(CacheManager.getPrefix() + String.format(Constants.CACHE_USER, user));
// mIgnore.add(CacheManager.getPrefix() + String.format(Constants.CACHE_TIMELINE_LIST_NAME, user));
// mIgnore.add(CacheManager.getPrefix() + String.format(Constants.CACHE_MENTION_LIST_NAME, user));
// }
//mIgnore.add(CacheManager.getPrefix() + Constants.CACHE_CURRENT_LOCATION);
//mIgnore.add(CacheManager.getPrefix() + Constants.CACHE_LINKED_ACCOUNTS);
}
/**
* Clears the cache up to the {@link #MAX_SIZE}
*/
public void clearCache()
{
File files = new File(CacheManager.getInstance().getCachePath());
FileFilter filter = new FileFilter()
{
@Override public boolean accept(File arg0)
{
if (arg0.isDirectory())
{
return false;
}
return !mIgnore.contains(arg0.getName());
};
};
File[] fileList = files.listFiles(filter);
Arrays.sort(fileList, new Comparator<File>()
{
@Override public int compare(File object1, File object2)
{
if (object1.lastModified() > object2.lastModified())
{
return -1;
}
else if (object1.lastModified() < object2.lastModified())
{
return +1;
}
else
{
return 0;
}
}
});
long cacheSize = 0L;//mCacheManager.getCacheSize();
int index = 0;
while (cacheSize > MAX_SIZE)
{
cacheSize -= fileList[index].length();
fileList[index++].delete();
}
}
}